package cn.lxh.blog.controller;


import cn.lxh.blog.domain.Comment;
import cn.lxh.blog.dto.CommentDto;
import cn.lxh.blog.query.CommentQuery;
import cn.lxh.blog.service.ICommentService;
import cn.lxh.exception.BusinessException;
import cn.lxh.util.JsonResult;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * CommentController控制器类
 */
@RestController // 该类交给spring管理, 并且返回JSON格式
@RequestMapping("/comment") // 默认请求路径
@Api(tags = "评论接口类")
public class CommentController {

    @Autowired
    private ICommentService commentService;

    /**
     * 根据评论id查询所有评论
     *
     * @param articleId
     * @return
     */
    @GetMapping("/{articleId}")
    public List<Comment> findByArticleId(@PathVariable("articleId") Long articleId) {
        return commentService.findByArticleId(articleId);
    }

    /**
     * 根据id判断是添加还是修改
     *
     * @param comment
     * @return
     */
    @PutMapping
    public JsonResult addOrUpdate(@RequestBody Comment comment) { // 将前端JSON格式的数据转为Java对象
        try {
            if (comment.getId() == null) {
                // 添加评论
                commentService.add(comment);
            } else {
                // 修改评论
                commentService.update(comment);
            }
            return JsonResult.success(); // 成功
        } catch (BusinessException e) {
            return JsonResult.error(e.getMessage());
        } catch (Exception e) {
            e.printStackTrace(); // 打印异常信息
            return JsonResult.error("网络超时!"); // 失败
        }
    }

    /**
     * 根据id删除评论
     *
     * @param id
     * @return
     */
    @DeleteMapping("/{id}")
    public JsonResult delete(@PathVariable("id") String id) {
        try {
            // 根据id删除评论
            commentService.delete(id);
            return JsonResult.success(); // 成功
        } catch (Exception e) {
            e.printStackTrace(); // 打印异常信息
            return JsonResult.error(); // 失败
        }
    }

    /**
     * 分页查询
     *
     * @param commentQuery
     * @return
     */
    @PostMapping
    public CommentDto queryPage(@RequestBody CommentQuery commentQuery) {
        return commentService.queryPage(commentQuery);
    }

}
